package com.umxwe.kill.core.template.service;

import com.github.pagehelper.PageInfo;
import com.umxwe.kill.core.template.domain.PageQueryParams;

import java.util.List;

/**
 * @author shendezhi
 */
public interface IBaseService<T extends PageQueryParams> {
    /**
     * 不分页查询
     *
     * @param t
     * @return
     */
    List<T> select(T t);

    /**
     * 分页查询
     *
     * @param t
     * @return
     */
    PageInfo<T> query(T t);

    /**
     * 插入 selective
     *
     * @param t
     * @return
     */
    T insertSelective(T t);

    /**
     * 更新
     *
     * @param t
     * @return
     */
    T updateByPrimaryKeySelective(T t);

    /**
     * 删除
     *
     * @param id
     * @return
     */
    int deleteByPrimaryKey(Object id);

    /**
     * 查询单个,内部做了 limit1 ,请在业务上保证数据唯一
     *
     * @param t
     * @return
     */
    T selectOne(T t);

    /**
     * 根据id获取单个
     *
     * @param id
     * @return
     */
    T get(Object id);

    /**
     * 查询数量
     *
     * @param t
     * @return
     */
    long selectCount(T t);

    /**
     * 是否存在
     *
     * @param t
     * @return
     */
    boolean exists(T t);

    /**
     * 批量插入,mapper需要继承 BatchInsertMapper
     * @param list
     * @return
     */
    int batchInsert(List<T> list);


}
